package com.romotc.qqrobot.webqq.qqInterfaceCatching;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

import com.romotc.joyin.bean.CustGroup;
import com.romotc.joyin.bean.CustGroupService;
import com.romotc.joyin.bean.Customer;
import com.romotc.joyin.bean.CustomerService;
import com.romotc.qqrobot.bean.QQUserFriend;
import com.romotc.qqrobot.bean.json.QQUserFriendJsonObject;
import com.romotc.scache.RequestSpy;

public class Get_user_friends2_Catching extends QQUrlBodyModifyCatching {

	@Override
	public String modifyResponseBody(String origResPonseBody, RequestSpy rqSpy) {
		
		ObjectMapper mapper = new ObjectMapper();
		QQUserFriendJsonObject jsonData;
		List<QQUserFriend> userFriendList = null;
		List<CustGroup> userGroupList = null;
		List<Customer> newCustList = null;
		try {
			
			jsonData = mapper.readValue(origResPonseBody, QQUserFriendJsonObject.class);
			
			//2.服务器返回的分组信息
			userGroupList = CustGroup.buildCustGroups(jsonData, rqSpy.getReqSN());
			//检查腾讯返回的分组信息：如果在信息中存在则设置上相应的信息，如果为不存在则增加相应的客户分组
			CustGroupService.checkCustGroups(userGroupList, rqSpy.getReqSN());
			
			//1.服务器返回的好友信息
			userFriendList = QQUserFriend.buildQQUserFriends(jsonData, rqSpy);
			//检查腾讯返回的好友：如果在客户信息中存在则设置上custId上(设置为负数)，如果为不存在则保存数据库并增加相应的客户到返回列表中
			//RomUnDo 好友分组是否需要根据数据库修改，应该是不在这处理，因为这里的客户信息不一定准确
			newCustList = CustomerService.checkCustomers(userFriendList, rqSpy);
			
		} catch (JsonParseException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (JsonMappingException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		//2.对对象进行修改增加
		//2.1增加数据库中有 而腾讯好友列表中没有的
		userFriendList = CustomerService.addCustomersNotExistInList(userFriendList);
		
		//2.2增加数据库中有 而腾讯列表中没有的
		//RomUnDo 暂时先以腾讯的好友分组为准
	
		
//		QQUserFriend quf = new QQUserFriend();
//		quf.setCategories(1);
//		quf.setFace(585);
//		quf.setFlag1(0);
//		quf.setFlag2(0);
//		quf.setIs_vip(0);
//		quf.setMarkname("markName中文名");
//		quf.setNick("nickName名");
//		quf.setQqNum("97190865");
//		quf.setUin(-999);
//		quf.setVip_level(0);
		
		
		//3.将对象解析为jsonObject
		QQUserFriendJsonObject qqUserFriendJsonObject = QQUserFriendJsonObject
			.QQUserFriendJsonObject(userFriendList);
		
		//4.jsonObject解析为string
		try {
			origResPonseBody = mapper.writeValueAsString(qqUserFriendJsonObject);
		} catch (JsonGenerationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (JsonMappingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//5.返回修改后的响应体
		return origResPonseBody;
	}
	
	
}
